home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 July: Mac OS SDK / Dev.CD Jul 00 SDK2.toast / Development Kits / Cross Platform / QuickTime 4.1.2 Windows SDK / CIncludes / IAExtractor.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-04-12  |  16.4 KB  |  404 lines  |  [TEXT/R*ch]

  1. /*
  2.      File:        IAExtractor.h
  3.  
  4.      Contains:    Interfaces to Find by Content Plugins that scan files
  5.  
  6.      Version:    Technology:    Mac OS 8.6
  7.                  Release:    QuickTime 4.1
  8.  
  9.      Copyright:    (c) 1999 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __IAEXTRACTOR__
  18. #define __IAEXTRACTOR__
  19.  
  20. #ifndef __CONDITIONALMACROS__
  21.     #include <ConditionalMacros.h>
  22. #endif
  23.  
  24. #ifndef __MACTYPES__
  25.     #include <MacTypes.h>
  26. #endif
  27.  
  28. #ifndef __MIXEDMODE__
  29.     #include <MixedMode.h>
  30. #endif
  31.  
  32. #ifndef __MACERRORS__
  33.     #include <MacErrors.h>
  34. #endif
  35.  
  36.  
  37.  
  38.  
  39. #if PRAGMA_ONCE
  40. #pragma once
  41. #endif
  42.  
  43. #ifdef __cplusplus
  44. extern "C" {
  45. #endif
  46.  
  47. #if PRAGMA_IMPORT
  48. #pragma import on
  49. #endif
  50.  
  51. #if PRAGMA_STRUCT_ALIGN
  52.     #pragma options align=mac68k
  53. #elif PRAGMA_STRUCT_PACKPUSH
  54.     #pragma pack(push, 2)
  55. #elif PRAGMA_STRUCT_PACK
  56.     #pragma pack(2)
  57. #endif
  58.  
  59. /* modes for IASetDocAccessorReadPositionProc */
  60. enum {
  61.     kIAFromStartMode            = 0,
  62.     kIAFromCurrMode                = 1,
  63.     kIAFromEndMode                = 2
  64. };
  65.  
  66. /* versions for plug-ins */
  67. enum {
  68.     kIAExtractorVersion1        = 0x00010001,
  69.     kIAExtractorCurrentVersion    = kIAExtractorVersion1
  70. };
  71.  
  72. /* types */
  73. typedef OSStatus                         IAResult;
  74. typedef struct OpaqueIAPluginRef*         IAPluginRef;
  75. typedef struct OpaqueIADocAccessorRef*     IADocAccessorRef;
  76. typedef struct OpaqueIADocRef*             IADocRef;
  77. /* IAPluginInitBlock functions */
  78. typedef CALLBACK_API_C( void *, IAAllocProcPtr )(UInt32 inSize);
  79. typedef CALLBACK_API_C( void , IAFreeProcPtr )(void *inObject);
  80. typedef CALLBACK_API_C( UInt8 , IAIdleProcPtr )(void);
  81. typedef STACK_UPP_TYPE(IAAllocProcPtr)                             IAAllocUPP;
  82. typedef STACK_UPP_TYPE(IAFreeProcPtr)                             IAFreeUPP;
  83. typedef STACK_UPP_TYPE(IAIdleProcPtr)                             IAIdleUPP;
  84. #if OPAQUE_UPP_TYPES
  85.     EXTERN_API(IAAllocUPP)
  86.     NewIAAllocUPP                   (IAAllocProcPtr            userRoutine);
  87.  
  88.     EXTERN_API(IAFreeUPP)
  89.     NewIAFreeUPP                   (IAFreeProcPtr            userRoutine);
  90.  
  91.     EXTERN_API(IAIdleUPP)
  92.     NewIAIdleUPP                   (IAIdleProcPtr            userRoutine);
  93.  
  94.     EXTERN_API(void)
  95.     DisposeIAAllocUPP               (IAAllocUPP                userUPP);
  96.  
  97.     EXTERN_API(void)
  98.     DisposeIAFreeUPP               (IAFreeUPP                userUPP);
  99.  
  100.     EXTERN_API(void)
  101.     DisposeIAIdleUPP               (IAIdleUPP                userUPP);
  102.  
  103.     EXTERN_API(void *)
  104.     InvokeIAAllocUPP               (UInt32                    inSize,
  105.                                     IAAllocUPP                userUPP);
  106.  
  107.     EXTERN_API(void)
  108.     InvokeIAFreeUPP                   (void *                    inObject,
  109.                                     IAFreeUPP                userUPP);
  110.  
  111.     EXTERN_API(UInt8)
  112.     InvokeIAIdleUPP                   (IAIdleUPP                userUPP);
  113.  
  114. #else
  115.     enum { uppIAAllocProcInfo = 0x000000F1 };                         /* 4_bytes Func(4_bytes) */
  116.     enum { uppIAFreeProcInfo = 0x000000C1 };                         /* no_return_value Func(4_bytes) */
  117.     enum { uppIAIdleProcInfo = 0x00000011 };                         /* 1_byte Func() */
  118.     #define NewIAAllocUPP(userRoutine)                                 (IAAllocUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIAAllocProcInfo, GetCurrentArchitecture())
  119.     #define NewIAFreeUPP(userRoutine)                                 (IAFreeUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIAFreeProcInfo, GetCurrentArchitecture())
  120.     #define NewIAIdleUPP(userRoutine)                                 (IAIdleUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIAIdleProcInfo, GetCurrentArchitecture())
  121.     #define DisposeIAAllocUPP(userUPP)                                 DisposeRoutineDescriptor(userUPP)
  122.     #define DisposeIAFreeUPP(userUPP)                                 DisposeRoutineDescriptor(userUPP)
  123.     #define DisposeIAIdleUPP(userUPP)                                 DisposeRoutineDescriptor(userUPP)
  124.     #define InvokeIAAllocUPP(inSize, userUPP)                         (void *)CALL_ONE_PARAMETER_UPP((userUPP), uppIAAllocProcInfo, (inSize))
  125.     #define InvokeIAFreeUPP(inObject, userUPP)                         CALL_ONE_PARAMETER_UPP((userUPP), uppIAFreeProcInfo, (inObject))
  126.     #define InvokeIAIdleUPP(userUPP)                                 (UInt8)CALL_ZERO_PARAMETER_UPP((userUPP), uppIAIdleProcInfo)
  127. #endif
  128. /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  129. #define NewIAAllocProc(userRoutine)                             NewIAAllocUPP(userRoutine)
  130. #define NewIAFreeProc(userRoutine)                                 NewIAFreeUPP(userRoutine)
  131. #define NewIAIdleProc(userRoutine)                                 NewIAIdleUPP(userRoutine)
  132. #define CallIAAllocProc(userRoutine, inSize)                    InvokeIAAllocUPP(inSize, userRoutine)
  133. #define CallIAFreeProc(userRoutine, inObject)                    InvokeIAFreeUPP(inObject, userRoutine)
  134. #define CallIAIdleProc(userRoutine)                                InvokeIAIdleUPP(userRoutine)
  135.  
  136. struct IAPluginInitBlock {
  137.     IAAllocUPP                         Alloc;
  138.     IAFreeUPP                         Free;
  139.     IAIdleUPP                         Idle;
  140. };
  141. typedef struct IAPluginInitBlock        IAPluginInitBlock;
  142. typedef IAPluginInitBlock *                IAPluginInitBlockPtr;
  143. /* IADocAccessorRecord  functions */
  144. typedef CALLBACK_API_C( OSStatus , IADocAccessorOpenProcPtr )(IADocAccessorRef inAccessor);
  145. typedef CALLBACK_API_C( OSStatus , IADocAccessorCloseProcPtr )(IADocAccessorRef inAccessor);
  146. typedef CALLBACK_API_C( OSStatus , IADocAccessorReadProcPtr )(IADocAccessorRef inAccessor, void *buffer, UInt32 *ioSize);
  147. typedef CALLBACK_API_C( OSStatus , IASetDocAccessorReadPositionProcPtr )(IADocAccessorRef inAccessor, SInt32 inMode, SInt32 inOffset);
  148. typedef CALLBACK_API_C( OSStatus , IAGetDocAccessorReadPositionProcPtr )(IADocAccessorRef inAccessor, SInt32 *outPostion);
  149. typedef CALLBACK_API_C( OSStatus , IAGetDocAccessorEOFProcPtr )(IADocAccessorRef inAccessor, SInt32 *outEOF);
  150. typedef STACK_UPP_TYPE(IADocAccessorOpenProcPtr)                 IADocAccessorOpenUPP;
  151. typedef STACK_UPP_TYPE(IADocAccessorCloseProcPtr)                 IADocAccessorCloseUPP;
  152. typedef STACK_UPP_TYPE(IADocAccessorReadProcPtr)                 IADocAccessorReadUPP;
  153. typedef STACK_UPP_TYPE(IASetDocAccessorReadPositionProcPtr)     IASetDocAccessorReadPositionUPP;
  154. typedef STACK_UPP_TYPE(IAGetDocAccessorReadPositionProcPtr)     IAGetDocAccessorReadPositionUPP;
  155. typedef STACK_UPP_TYPE(IAGetDocAccessorEOFProcPtr)                 IAGetDocAccessorEOFUPP;
  156. #if OPAQUE_UPP_TYPES
  157.     EXTERN_API(IADocAccessorOpenUPP)
  158.     NewIADocAccessorOpenUPP           (IADocAccessorOpenProcPtr userRoutine);
  159.  
  160.     EXTERN_API(IADocAccessorCloseUPP)
  161.     NewIADocAccessorCloseUPP       (IADocAccessorCloseProcPtr userRoutine);
  162.  
  163.     EXTERN_API(IADocAccessorReadUPP)
  164.     NewIADocAccessorReadUPP           (IADocAccessorReadProcPtr userRoutine);
  165.  
  166.     EXTERN_API(IASetDocAccessorReadPositionUPP)
  167.     NewIASetDocAccessorReadPositionUPP    (IASetDocAccessorReadPositionProcPtr userRoutine);
  168.  
  169.     EXTERN_API(IAGetDocAccessorReadPositionUPP)
  170.     NewIAGetDocAccessorReadPositionUPP    (IAGetDocAccessorReadPositionProcPtr userRoutine);
  171.  
  172.     EXTERN_API(IAGetDocAccessorEOFUPP)
  173.     NewIAGetDocAccessorEOFUPP       (IAGetDocAccessorEOFProcPtr userRoutine);
  174.  
  175.     EXTERN_API(void)
  176.     DisposeIADocAccessorOpenUPP       (IADocAccessorOpenUPP    userUPP);
  177.  
  178.     EXTERN_API(void)
  179.     DisposeIADocAccessorCloseUPP    (IADocAccessorCloseUPP    userUPP);
  180.  
  181.     EXTERN_API(void)
  182.     DisposeIADocAccessorReadUPP       (IADocAccessorReadUPP    userUPP);
  183.  
  184.     EXTERN_API(void)
  185.     DisposeIASetDocAccessorReadPositionUPP    (IASetDocAccessorReadPositionUPP userUPP);
  186.  
  187.     EXTERN_API(void)
  188.     DisposeIAGetDocAccessorReadPositionUPP    (IAGetDocAccessorReadPositionUPP userUPP);
  189.  
  190.     EXTERN_API(void)
  191.     DisposeIAGetDocAccessorEOFUPP    (IAGetDocAccessorEOFUPP userUPP);
  192.  
  193.     EXTERN_API(OSStatus)
  194.     InvokeIADocAccessorOpenUPP       (IADocAccessorRef        inAccessor,
  195.                                     IADocAccessorOpenUPP    userUPP);
  196.  
  197.     EXTERN_API(OSStatus)
  198.     InvokeIADocAccessorCloseUPP       (IADocAccessorRef        inAccessor,
  199.                                     IADocAccessorCloseUPP    userUPP);
  200.  
  201.     EXTERN_API(OSStatus)
  202.     InvokeIADocAccessorReadUPP       (IADocAccessorRef        inAccessor,
  203.                                     void *                    buffer,
  204.                                     UInt32 *                ioSize,
  205.                                     IADocAccessorReadUPP    userUPP);
  206.  
  207.     EXTERN_API(OSStatus)
  208.     InvokeIASetDocAccessorReadPositionUPP    (IADocAccessorRef inAccessor,
  209.                                     SInt32                    inMode,
  210.                                     SInt32                    inOffset,
  211.                                     IASetDocAccessorReadPositionUPP userUPP);
  212.  
  213.     EXTERN_API(OSStatus)
  214.     InvokeIAGetDocAccessorReadPositionUPP    (IADocAccessorRef inAccessor,
  215.                                     SInt32 *                outPostion,
  216.                                     IAGetDocAccessorReadPositionUPP userUPP);
  217.  
  218.     EXTERN_API(OSStatus)
  219.     InvokeIAGetDocAccessorEOFUPP    (IADocAccessorRef        inAccessor,
  220.                                     SInt32 *                outEOF,
  221.                                     IAGetDocAccessorEOFUPP    userUPP);
  222.  
  223. #else
  224.     enum { uppIADocAccessorOpenProcInfo = 0x000000F1 };             /* 4_bytes Func(4_bytes) */
  225.     enum { uppIADocAccessorCloseProcInfo = 0x000000F1 };             /* 4_bytes Func(4_bytes) */
  226.     enum { uppIADocAccessorReadProcInfo = 0x00000FF1 };             /* 4_bytes Func(4_bytes, 4_bytes, 4_bytes) */
  227.     enum { uppIASetDocAccessorReadPositionProcInfo = 0x00000FF1 };     /* 4_bytes Func(4_bytes, 4_bytes, 4_bytes) */
  228.     enum { uppIAGetDocAccessorReadPositionProcInfo = 0x000003F1 };     /* 4_bytes Func(4_bytes, 4_bytes) */
  229.     enum { uppIAGetDocAccessorEOFProcInfo = 0x000003F1 };             /* 4_bytes Func(4_bytes, 4_bytes) */
  230.     #define NewIADocAccessorOpenUPP(userRoutine)                     (IADocAccessorOpenUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIADocAccessorOpenProcInfo, GetCurrentArchitecture())
  231.     #define NewIADocAccessorCloseUPP(userRoutine)                     (IADocAccessorCloseUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIADocAccessorCloseProcInfo, GetCurrentArchitecture())
  232.     #define NewIADocAccessorReadUPP(userRoutine)                     (IADocAccessorReadUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIADocAccessorReadProcInfo, GetCurrentArchitecture())
  233.     #define NewIASetDocAccessorReadPositionUPP(userRoutine)         (IASetDocAccessorReadPositionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIASetDocAccessorReadPositionProcInfo, GetCurrentArchitecture())
  234.     #define NewIAGetDocAccessorReadPositionUPP(userRoutine)         (IAGetDocAccessorReadPositionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIAGetDocAccessorReadPositionProcInfo, GetCurrentArchitecture())
  235.     #define NewIAGetDocAccessorEOFUPP(userRoutine)                     (IAGetDocAccessorEOFUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIAGetDocAccessorEOFProcInfo, GetCurrentArchitecture())
  236.     #define DisposeIADocAccessorOpenUPP(userUPP)                     DisposeRoutineDescriptor(userUPP)
  237.     #define DisposeIADocAccessorCloseUPP(userUPP)                     DisposeRoutineDescriptor(userUPP)
  238.     #define DisposeIADocAccessorReadUPP(userUPP)                     DisposeRoutineDescriptor(userUPP)
  239.     #define DisposeIASetDocAccessorReadPositionUPP(userUPP)         DisposeRoutineDescriptor(userUPP)
  240.     #define DisposeIAGetDocAccessorReadPositionUPP(userUPP)         DisposeRoutineDescriptor(userUPP)
  241.     #define DisposeIAGetDocAccessorEOFUPP(userUPP)                     DisposeRoutineDescriptor(userUPP)
  242.     #define InvokeIADocAccessorOpenUPP(inAccessor, userUPP)         (OSStatus)CALL_ONE_PARAMETER_UPP((userUPP), uppIADocAccessorOpenProcInfo, (inAccessor))
  243.     #define InvokeIADocAccessorCloseUPP(inAccessor, userUPP)         (OSStatus)CALL_ONE_PARAMETER_UPP((userUPP), uppIADocAccessorCloseProcInfo, (inAccessor))
  244.     #define InvokeIADocAccessorReadUPP(inAccessor, buffer, ioSize, userUPP)  (OSStatus)CALL_THREE_PARAMETER_UPP((userUPP), uppIADocAccessorReadProcInfo, (inAccessor), (buffer), (ioSize))
  245.     #define InvokeIASetDocAccessorReadPositionUPP(inAccessor, inMode, inOffset, userUPP)  (OSStatus)CALL_THREE_PARAMETER_UPP((userUPP), uppIASetDocAccessorReadPositionProcInfo, (inAccessor), (inMode), (inOffset))
  246.     #define InvokeIAGetDocAccessorReadPositionUPP(inAccessor, outPostion, userUPP)  (OSStatus)CALL_TWO_PARAMETER_UPP((userUPP), uppIAGetDocAccessorReadPositionProcInfo, (inAccessor), (outPostion))
  247.     #define InvokeIAGetDocAccessorEOFUPP(inAccessor, outEOF, userUPP)  (OSStatus)CALL_TWO_PARAMETER_UPP((userUPP), uppIAGetDocAccessorEOFProcInfo, (inAccessor), (outEOF))
  248. #endif
  249. /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  250. #define NewIADocAccessorOpenProc(userRoutine)                     NewIADocAccessorOpenUPP(userRoutine)
  251. #define NewIADocAccessorCloseProc(userRoutine)                     NewIADocAccessorCloseUPP(userRoutine)
  252. #define NewIADocAccessorReadProc(userRoutine)                     NewIADocAccessorReadUPP(userRoutine)
  253. #define NewIASetDocAccessorReadPositionProc(userRoutine)         NewIASetDocAccessorReadPositionUPP(userRoutine)
  254. #define NewIAGetDocAccessorReadPositionProc(userRoutine)         NewIAGetDocAccessorReadPositionUPP(userRoutine)
  255. #define NewIAGetDocAccessorEOFProc(userRoutine)                 NewIAGetDocAccessorEOFUPP(userRoutine)
  256. #define CallIADocAccessorOpenProc(userRoutine, inAccessor)        InvokeIADocAccessorOpenUPP(inAccessor, userRoutine)
  257. #define CallIADocAccessorCloseProc(userRoutine, inAccessor)        InvokeIADocAccessorCloseUPP(inAccessor, userRoutine)
  258. #define CallIADocAccessorReadProc(userRoutine, inAccessor, buffer, ioSize) InvokeIADocAccessorReadUPP(inAccessor, buffer, ioSize, userRoutine)
  259. #define CallIASetDocAccessorReadPositionProc(userRoutine, inAccessor, inMode, inOffset) InvokeIASetDocAccessorReadPositionUPP(inAccessor, inMode, inOffset, userRoutine)
  260. #define CallIAGetDocAccessorReadPositionProc(userRoutine, inAccessor, outPostion) InvokeIAGetDocAccessorReadPositionUPP(inAccessor, outPostion, userRoutine)
  261. #define CallIAGetDocAccessorEOFProc(userRoutine, inAccessor, outEOF) InvokeIAGetDocAccessorEOFUPP(inAccessor, outEOF, userRoutine)
  262. /* IADocAccessorRecord */
  263.  
  264. struct IADocAccessorRecord {
  265.     IADocAccessorRef                 docAccessor;
  266.     IADocAccessorOpenUPP             OpenDoc;
  267.     IADocAccessorCloseUPP             CloseDoc;
  268.     IADocAccessorReadUPP             ReadDoc;
  269.     IASetDocAccessorReadPositionUPP  SetReadPosition;
  270.     IAGetDocAccessorReadPositionUPP  GetReadPosition;
  271.     IAGetDocAccessorEOFUPP             GetEOF;
  272. };
  273. typedef struct IADocAccessorRecord        IADocAccessorRecord;
  274.  
  275. typedef IADocAccessorRecord *            IADocAccessorPtr;
  276. /*
  277.    If building a text extractor, define BUILDING_IAEXTRACTOR to 1 to export
  278.    the following functions.  If building a client of text extractor plug-ins,
  279.    define BUILDING_IAEXTRACTOR to false so the following methods are not
  280.    exported.
  281. */
  282. #ifndef BUILDING_IAEXTRACTOR
  283. #define BUILDING_IAEXTRACTOR 1
  284. #endif
  285. #if BUILDING_IAEXTRACTOR
  286. #if PRAGMA_IMPORT
  287. #pragma export on
  288. #endif
  289. #endif
  290. /*
  291.     A Sherlock Plugin is a CFM shared library that implements the following functions:
  292. */
  293.  
  294. /*
  295.    IAPluginInit - plug-in's method that is called when opened by a client.  The
  296.    plug-in retuns an IAPluginRef which is an opaque type defined by the plug-in
  297.    and used for the current session.
  298. */
  299. EXTERN_API_C( OSStatus )
  300. IAPluginInit                    (IAPluginInitBlockPtr     initBlock,
  301.                                  IAPluginRef *            outPluginRef);
  302.  
  303. /*
  304.    IAPluginTerm - plug-in's method that is called when closed by a client.  The
  305.    client passes back the IAPluginRef that was returned from IAPluginInit.  At
  306.    this time the plug-in can perform any needed cleanup.
  307. */
  308. EXTERN_API_C( OSStatus )
  309. IAPluginTerm                    (IAPluginRef             inPluginRef);
  310.  
  311. /*
  312.    IAGetExtractorVersion - returns the version of the Text Extractor interface that the
  313.    plug-in was built with.
  314. */
  315. EXTERN_API_C( OSStatus )
  316. IAGetExtractorVersion            (IAPluginRef             inPluginRef,
  317.                                  UInt32 *                outPluginVersion);
  318.  
  319. /*
  320.    IACountSupportedDocTypes - returns number of document types the plug-in supports
  321. */
  322. EXTERN_API_C( OSStatus )
  323. IACountSupportedDocTypes        (IAPluginRef             inPluginRef,
  324.                                  UInt32 *                outCount);
  325.  
  326. /*
  327.    IAGetIndSupportedDocType - returns the nth document type the plug-in supports.
  328.    First item is one not zero.  Returns the MIME type of supported document
  329. */
  330. EXTERN_API_C( OSStatus )
  331. IAGetIndSupportedDocType        (IAPluginRef             inPluginRef,
  332.                                  UInt32                 inIndex,
  333.                                  char **                outMIMEType);
  334.  
  335. /*
  336.    IAOpenDocument - returns a reference to the text of a document.  Client passes in an
  337.    IADocAccessorRecord* that the plug-in can use to to access a document.  Plug-in
  338.    returns IADocRef which an opaque type defined by plug-in to reference the text of
  339.    a document.
  340. */
  341. EXTERN_API_C( OSStatus )
  342. IAOpenDocument                    (IAPluginRef             inPluginRef,
  343.                                  IADocAccessorRecord *    inDoc,
  344.                                  IADocRef *                outDoc);
  345.  
  346. /*
  347.    IACloseDocument - perform any cleanup for IADocRef that was returned from IAOpenDocument.
  348. */
  349. EXTERN_API_C( OSStatus )
  350. IACloseDocument                    (IADocRef                 inDoc);
  351.  
  352. /*
  353.    IAGetNextTextRun - get next run of text.  On input, ioSize is the length of buffer argument.
  354.    On output, ioSize contains the number of bytes written to buffer argument
  355. */
  356. EXTERN_API_C( OSStatus )
  357. IAGetNextTextRun                (IADocRef                 inDoc,
  358.                                  void *                    buffer,
  359.                                  UInt32 *                ioSize);
  360.  
  361. /*
  362.    IAGetTextRunInfo - get information about the text returned from the last call to IAGetNextTextRun.
  363.    Arguments outEncoding ane outLanguage are options an NULL can be passed in.  If arguments are
  364.    non-null, plug-in will return pointer to internet encoding and language of last run of text.
  365.    If encoding or language are unknown, plug-in will set *outEncoding and/or *outLanguage to NULL. 
  366. */
  367. EXTERN_API_C( OSStatus )
  368. IAGetTextRunInfo                (IADocRef                 inDoc,
  369.                                  char **                outEncoding,
  370.                                  char **                outLanguage);
  371.  
  372.  
  373.  
  374. #if BUILDING_IAEXTRACTOR
  375. #if PRAGMA_IMPORT
  376. #pragma export off
  377. #endif
  378. #endif
  379.  
  380.  
  381.  
  382.  
  383.  
  384. #if PRAGMA_STRUCT_ALIGN
  385.     #pragma options align=reset
  386. #elif PRAGMA_STRUCT_PACKPUSH
  387.     #pragma pack(pop)
  388. #elif PRAGMA_STRUCT_PACK
  389.     #pragma pack()
  390. #endif
  391.  
  392. #ifdef PRAGMA_IMPORT_OFF
  393. #pragma import off
  394. #elif PRAGMA_IMPORT
  395. #pragma import reset
  396. #endif
  397.  
  398. #ifdef __cplusplus
  399. }
  400. #endif
  401.  
  402. #endif /* __IAEXTRACTOR__ */
  403.  
  404.